package com.sgcc.lms.config;

import com.sgcc.lms.bean.Person;
import com.sgcc.lms.dao.UserDao;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;

/**
 * @Author: 李孟帅
 * @CreateTime: 2020-11-27 14:39
 * @Description:
 */
@Configuration  //告诉Spring这是一个配置类
//@ComponentScan("com.sgcc.lms")  //将com.sgcc.lms包及其子包下的包含@Component的注解的组件注入容器
@ComponentScan(value="com.sgcc.lms",excludeFilters  = {
        @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class}),
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes = {UserDao.class}),
        @ComponentScan.Filter(type = FilterType.CUSTOM,classes = {MyTypeFilter.class})},useDefaultFilters = true
)
//@ComponentScan  value:指定要扫描的包
//excludeFilters = Filter[] ：指定扫描的时候按照什么规则排除那些组件
//includeFilters = Filter[] ：指定扫描的时候只需要包含哪些组件
//FilterType.ANNOTATION：按照注解
//FilterType.ASSIGNABLE_TYPE：按照给定的类型；
//FilterType.ASPECTJ：使用ASPECTJ表达式
//FilterType.REGEX：使用正则指定
//FilterType.CUSTOM：使用自定义规则
public class Config {

    @Bean
    public Person person(){
        return new Person();
    }
}
